package source;

public class RockPaperScissors {
	public Result play(RPSEnum p1, RPSEnum p2) {
		switch (p1) {
		case PAPER:
			switch (p2) {
			case PAPER:
				return Result.TIE;
			case ROCK:
				return Result.WIN;
			case SCISSORS:
				return Result.LOSE;
			default:
				return Result.LOSE;

			}
		case ROCK:
			switch (p2) {
			case PAPER:
				return Result.LOSE;
			case ROCK:
				return Result.TIE;
			case SCISSORS:
				return Result.WIN;
			default:
				return Result.LOSE;

			}

		case SCISSORS:
			switch (p2) {
			case PAPER:
				return Result.WIN;
			case ROCK:
				return Result.LOSE;
			case SCISSORS:
				return Result.TIE;
			default:
				break;
			}

		default:
			return Result.LOSE;

		}

	}

	public Result play(Player p1, Player p2) {

		for (int i = 0; i < p1.getRPSEnumLength(); i++) {
			switch (play(p1.getNextMove(), p2.getNextMove())) {
			case WIN:
				p1.setScore(p1.getScore() + 1);
				break;
			case TIE:
				p1.setScore(p1.getScore() + 1);
				p2.setScore(p2.getScore() + 1);
				break;
			case LOSE:
				p2.setScore(p2.getScore() + 1);
				break;
			default:
				break;

			}
		}
		if (p1.getScore() > p2.getScore())
			return Result.WIN;
		else if (p1.getScore() == p2.getScore())
			return Result.TIE;
		else
			return Result.LOSE;

	}
}
